package cn.com.surker.system.service;

import cn.com.surker.system.entity.SysOriginRole;
import cn.com.surker.system.entity.SysRole;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @Author lucky
 * @create 2022年06月24 16:46
 * @desc
 */
public interface RoleService {



    /**
     * 查询角色用户
     * @param rid 角色ID
     * @param name 员工名称
     * @return
     */
    Map<String, Object> queryRoleUser(Long rid, String name, Integer offset, Integer limit);

    /**
     * 查询角色菜单
     * @param rid 角色ID
     * @param name 菜单名称
     * @param type 菜单类型(0:手机菜单,1:后台菜单)
     * @return
     */
    Map<String, Object> queryRoleMenu(Long rid, String name, Integer type, Integer offset, Integer limit);

    /**
     * 角色菜单加入 增删改 权限设置
     * @param rid
     * @param name
     * @param type
     * @param offset
     * @param limit
     * @return
     */
    Map<String, Object> queryRoleMenuV1(Long rid, String name, Integer type, Integer offset, Integer limit);


    /**
     * 添加角色用户
     * @param uid 用户ID
     * @param rid 角色ID
     * @return
     */
    Integer deleteRoleUser(Long uid, Long rid);

	/**
	 * 删除用户下面的全部角色
	 * @param uid
	 * @return
	 */
	default Integer deleteRoleUser(Long uid){
    	return -1;
	}

    /**
     * 解除角色菜单
     * @param mid 菜单ID
     * @param rid 角色ID
     * @return
     */
    Integer deleteRoleMenu(Long mid, Long rid);

    /**
     * 添加角色用户
     * @param uid 用户ID
     * @param rid 角色ID
     * @return
     */
    Integer saveRoleUser(Long uid, Long rid);

    /**
     * 添加角色菜单
     * @param mid 菜单ID
     * @param rid 角色ID
     * @return
     */
    Integer saveRoleMenu(Long mid, Long rid);

    /**
     * 分页查询数据
     *
     * @param dto
     * @return
     */
    IPage findAllByPage(SysRole dto, Integer offset, Integer limit);

    /**
     * 加载用户菜单
     * @param uid
     * @return
     */
    List<String> loadUserMenu(Long uid);

    /**
     * 加载用户权限列表
     * @param uid
     * @return
     */
    List<String> loadRoleName(Long uid);

    /**
     * 新增数据
     *
     * @param dto page
     * @return
     */
    Integer saveInit(SysRole dto);

    /**
     * 更新数据状态
     *
     * @param rid 角色ID
     * @param status 状态
     * @return
     */
    Integer updateStatus(Long rid, Integer status);

    /**
     * 更新数据
     *
     * @param dto page
     * @return
     */
    Integer update(SysRole dto);

	/**
	 * 根据角色名称查询(完全匹配)
	 * @param name
	 * @return
	 */
	default List<SysRole> findByName(String name){
    	return new ArrayList<>();
	}

}
